<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Checklist: 设计类</title>
<meta name="uma.type" content="Checklist">
<meta name="uma.name" content="design_class">
<meta name="uma.presentationName" content="设计类">
<meta name="element_type" content="Checklist">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', true, false, false);
					
					//override the subsection text
					contentPage.subSection.expandAllText = 'Expand All Check Items';
					contentPage.subSection.collapseAllText = 'Collapse All Check Items';					
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="1.1028389988231071E-306"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Checklist: 设计类</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/checklist.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">此核对表有助于确保已对设计类正确建模。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../rup/domains/analysis_and_design_BD3BBB1D.html" guid="_kjFBYN7HEdm8G6yT7-Wdqw">分析与设计</a>
</li>
<li>
<a href="./../../../rup/roles/rup_capsule_designer_F3E66EDF.html" guid="{86253FE7-0036-4D14-8BD7-C18CE86A5E14}">封装体设计员</a>
</li>
<li>
<a href="./../../../rup/workproducts/rup_design_class_B33BD5E5.html" guid="{952A9CE9-D5A3-43AC-980D-0B9298F3872E}">设计类</a>
</li>
<li>
<a href="./../../../rup/roles/rup_designer_BA8DE74E.html" guid="{DB21F5EF-810B-4994-B120-79FA8774FA9D}">设计人员</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="XE_checkpoints__for_design_classes" key="检查点（checkpoints）" text="设计类的检查点" name="XE_checkpoints__for_design_classes" class="index"></a><br />
<br /></td>
</tr>
</table>
</div>
<div class="sectionHeading">Check Items</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="sectionTableCell">
<div class="stepHeading"> 概述</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><div style="MARGIN-LEFT: 2em">
    <ul>
        <li class="ck">
            类名明确反映它所扮演的角色。
        </li>
        <li class="ck">
            类的描述明确传达类的目的。
        </li>
        <li class="ck">
            类代表一个定义良好的抽象。
        </li>
        <li class="ck">
            类的属性和操作对于履行类的职责都是最根本的。
        </li>
        <li class="ck">
            每个类表示一小组一致且唯一的职责。
        </li>
        <li class="ck">
            类的职责是定义良好、明确陈述的，并与类的目的明确相关。
        </li>
        <li class="ck">
            每个类是相对自我包含的，并与其他类松耦合。
        </li>
        <li class="ck">
            类的职责的抽象级别一致（即，高级（应用级别）和低级（实现级别）职责不是混在一起的）。
        </li>
        <li class="ck">
            在同一继承层次结构中的类拥有唯一的类属性、操作和关系（即，它们继承所有公共的属性、操作和关系）。
        </li>
        <li class="ck">
            说明了类实例的完整生命周期。每个对象由一个或多个用例实现创建、使用或除去。
        </li>
        <li class="ck">
            类满足了由用例实现建立的行为需求。
        </li>
        <li class="ck">
            满足了需求规约中的类的所有需求。
        </li>
        <li class="ck">
            类的需求（如类描述和序列图的对象所反映）与类的状态机一致。
        </li>
        <li class="ck">
            类的所有职责是相关的，这样，类要存在于系统中，就不可能使用它的某些职责，而不使用它的其他职责。
        </li>
        <li class="ck">
            没有两个类在本质上有相同的目的。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 泛化／专门化</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            泛化关系层次结构是平衡的，因此不存在层次结构非常扁平或非常深的类。
        </li>
        <li class="ck">
            明显的共性反映在继承层次结构中。
        </li>
        <li class="ck">
            没有任何超类看上去是子类属性的合并。
        </li>
        <li class="ck">
            继承层次结构中没有具有不相关的属性的中间抽象类，示例包括继承树两边的重复子类。
        </li>
        <li class="ck">
            继承用于捕获公共设计抽象，而不主要用于实现考虑事项（即：复用代码位或类结构）。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 命名约定</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            类名指示目的。
        </li>
        <li class="ck">
            类名遵循在项目设计指南中指定的命名约定。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 操作</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            每个操作名都是描述性的和可理解的。
        </li>
        <li class="ck">
            状态机和操作是一致的。
        </li>
        <li class="ck">
            状态机和操作完整地描述类的行为。
        </li>
        <li class="ck">
            每个操作的参数在数量、名称和类型方面都是正确的。
        </li>
        <li class="ck">
            定义的每个操作的实现规约都是正确的。
        </li>
        <li class="ck">
            操作特征符符合目标编程语言的标准。
        </li>
        <li class="ck">
            每个操作至少由一个用例实现使用。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 属性</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            需要类的所有关系来支持类的某个操作。
        </li>
        <li class="ck">
            每个属性表示一个概念上的含义。
        </li>
        <li class="ck">
            每个属性名都是描述性的并正确传达它存储的信息。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 关系</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            聚集和关联的角色名描述关联和被关联的类之间的关系。
        </li>
        <li class="ck">
            关系的多重性是正确的。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 状态机</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><div style="MARGIN-LEFT: 2em">
    <ul>
        <li class="ck">
            状态机尽可能简单，但仍能表达必需的行为。
        </li>
        <li class="ck">
            状态机不包含任何多余的状态或转移。
        </li>
        <li class="ck">
            状态机具有明确的环境。
        </li>
        <li class="ck">
            所有引用的对象对包含它的对象都是可见的。
        </li>
        <li class="ck">
            状态机是高效的，并在时间和资源最佳平衡（由它分派的操作定义）的条件下执行它的行为。
        </li>
        <li class="ck">
            状态机是可理解的。
        </li>
        <li style="LIST-STYLE-TYPE: none">
            <ul>
                <li class="ck">
                    状态和转移名称在系统领域环境中是可理解的。
                </li>
                <li class="ck">
                    状态名称表明正在等待或发生什么，而不是已经发生了什么。
                </li>
                <li class="ck">
                    状态和转移名称在状态机中是唯一的（虽然不是严格的要求，但在调试中它有助于实现唯一名称）。
                </li>
                <li class="ck">
                    状态的逻辑分组包含在组合状态中。
                </li>
                <li class="ck">
                    组合状态用于有效减少复杂度了吗？
                </li>
                <li class="ck">
                    转移标注反映转移的底层原因。
                </li>
                <li class="ck">
                    关于状态转移的代码片段，其详细代码不会超过 25 行；相反地，有效地使用函数来减少转移代码复杂度。
                </li>
                <li class="ck">
                    已检查状态机嵌套，确保嵌套深度不会太深而不可理解；对于大多数复杂行为，一级或两级子状态通常就足够了。
                </li>
            </ul>
        </li>
        <li class="ck">
            已用活动类代替了并发子状态；活动类几乎总是比并发子状态更好的备选方案并更易理解。
        </li>
        <li class="reactiveck">
            在实时系统中，已使用封装体表示逻辑控制线程。
        </li>
        <li class="ck">
            已说明了错误或维护状态。
        </li>
        <li class="ck">
            在扩展的状态变量的位置已使用了子状态；转移警戒条件测试几个变量来确定转移应出现的状态是没有根据的。
        </li>
        <li class="ck">
            状态机不同于流程图。
        </li>
        <li class="ck">
            状态机不是过度分解的，它由带单个子状态的嵌套的状态机组成。 在嵌套的子状态是占位符（用于未来的设计工作或划分子类）的情况下，倘若选择是有意的，这可能暂时可被接受。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
